
let events = require("events");
// console.log(events);

var EventEmitter = events.EventEmitter;  // 事件触发器 (类似设计模式中的发布订阅 -> 可以添加  触发  清除  自定义事件)

var ob = new EventEmitter();  //创建事件触发器  实例化对象

// 绑定事件
// .on(eventName,callback)  eventName代表要绑定的事件名(即事件的名字),callback为当前事件被触发时所执行的函数(此函数可以接受.emit()方法传的参数)
// .once(eventName,callback)  功能同 .on 不过只运行一次
// .addListener(eventName,callback) 功能同 .on
// .prependListener (eventName,callback)  用法同on 将事件监听器添加到监听器数组的开头 (此事件第一个执行)

let a,b,c,d;

// console.log(a = 1);

ob.on("abc",a = function(arg){
    console.log("abc事件被触发了1",arg);
})
ob.addListener("abc",b = function(arg){
    console.log("abc事件被触发了2",arg);
})
ob.once("abc",c = function(arg){
    console.log("abc事件被触发了3",arg);
})
ob.prependListener("abc",d = function(arg){
    console.log("abc事件被触发了4",arg);
})


// 清除事件
// off(type,callback)
// removeListener(type,callback)
// .removeAllListeners(eventName) (注意.removeAllListeners()不要忘了加s) 删除名字为eventName的所有事件, eventName代表 需要被删除所有监听函数的事件名 该参数为可选值  如果不传,则会删除events对象下所有的事件的所有监听函数

// ob.off("abc",a);
// ob.off("abc",b);
// ob.off("abc",c);
// ob.off("abc",d);
// ob.removeAllListeners("abc");

// ob.emit(type,arg);
// ob.emit("abc",1);
// ob.emit("abc",2);

// .listenerCount(eventName) 查看绑定事件的个数 eventName为事件名
console.log(ob.listenerCount("abc"));

// .eventNames()  返回一个列出触发器已注册监听器的事件的数组。 数组中的值为字符串或符号
// ob.on("hello",function(){
//     console.log(11111);
// })
// console.log(ob.eventNames());

// 默认情况下,一个监听事件名 最多可绑定十个事件函数,如需改变则需要借用  .setMaxListeners方法

// ob.setMaxListeners(100);
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// ob.on("hello",function(){
//     console.log(11111);
// })
// console.log(ob.getMaxListeners());


